package pe.com.empresa.web.actions.articulos;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import pe.com.empresa.datos.dominio.ConsultaBuscarArticulos;
import pe.com.empresa.datos.dominio.ConsultaBuscarArticulosCriteria;
import pe.com.empresa.datos.dominio.TipoArticulo;
import pe.com.empresa.datos.dominio.TipoInventario;
import pe.com.empresa.servicios.businessdelegate.ArticulosBusinessDelegate;
import pe.com.empresa.servicios.servicio.BuscarArticuloService;
import pe.com.empresa.utiles.ActionHelper;
import pe.com.empresa.utiles.Constantes;

public class BuscarArticulosAction extends ActionHelper {

	private static final long serialVersionUID = 3806473371536405870L;
	
	private ConsultaBuscarArticulosCriteria criteria;
	private String fechaDesde;
	private String fechaHasta;
	private List<ConsultaBuscarArticulos> listArticulos;
	private List<TipoArticulo> listTipoArticulos;
	private List<TipoInventario> listTipoInventario;
	private String stringJson;
	private BuscarArticuloService service = new ArticulosBusinessDelegate().getBuscarArticuloService();
	
	public BuscarArticulosAction() {
		service.setSqlSessionFactory(this.getSqlSessionFactory());
	}
	
	public String formBuscarArticulo(){
		
		try {
			service.openSession();
			this.listTipoArticulos = service.obtenerTiposArticulos();
			this.listTipoInventario = service.obtenerTiposInventarios();
			
			service.closeSession();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return SUCCESS;
		
	}
	
	public String formBuscarArticuloPorReponer(){
		
		try {
			service.openSession();
			this.listTipoArticulos = service.obtenerTiposArticulos();
			this.listTipoInventario = service.obtenerTiposInventarios();
			
			service.closeSession();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return SUCCESS;
		
	}
	
	public String buscarArticulos(){
		
		try {
			
			service.openSession();
			criteria.setNombreArticulo((criteria.getNombreArticulo().equals("")) ? null : criteria.getNombreArticulo());
			criteria.setFechaRegistroDesde((this.fechaDesde.equals("")) ? null : this.dateFormat(this.fechaDesde));
			criteria.setFechaRegistroHasta((this.fechaHasta.equals("")) ? null : this.dateFormat(this.fechaHasta));
			criteria.setEstadoArticulo(1);
			this.listArticulos = service.obtenerArticulos(criteria);
			service.closeSession();
			
			this.getSessionContext().setAttribute(Constantes.LISTA_BUSQUEDA_ARTICULOS, listArticulos);
			
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		return SUCCESS;
	}
	
	@SuppressWarnings("unchecked")
	public String buscarArticulosPorReponer(){
		
		try {
			
			service.openSession();
			criteria.setNombreArticulo((criteria.getNombreArticulo().equals("")) ? null : criteria.getNombreArticulo());
			criteria.setFechaRegistroDesde((this.fechaDesde.equals("")) ? null : this.dateFormat(this.fechaDesde));
			criteria.setFechaRegistroHasta((this.fechaHasta.equals("")) ? null : this.dateFormat(this.fechaHasta));
			criteria.setEstadoArticulo(1);
			this.listArticulos = service.selectByCriteria("ConsultaBuscarArticulos", "consultaBuscarArticulosPorReponer", criteria);
			service.closeSession();
			
			stringJson = this.toListJson(listArticulos);
			
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		return SUCCESS;
	}
	
	@SuppressWarnings("unchecked")
	public String obtenerArticulos(){
		List<ConsultaBuscarArticulos> list = (ArrayList<ConsultaBuscarArticulos>)this.getSessionContext().getAttribute(Constantes.LISTA_BUSQUEDA_ARTICULOS);
		stringJson = this.toListJson(list);
		this.getSessionContext().removeAttribute(Constantes.LISTA_BUSQUEDA_ARTICULOS);
		return SUCCESS;
	}

	public String getStringJson() {
		return stringJson;
	}

	public void setStringJson(String stringJson) {
		this.stringJson = stringJson;
	}

	public List<ConsultaBuscarArticulos> getListArticulos() {
		return listArticulos;
	}

	public void setListArticulos(List<ConsultaBuscarArticulos> listArticulos) {
		this.listArticulos = listArticulos;
	}

	public List<TipoArticulo> getListTipoArticulos() {
		return listTipoArticulos;
	}

	public void setListTipoArticulos(List<TipoArticulo> listTipoArticulos) {
		this.listTipoArticulos = listTipoArticulos;
	}

	public List<TipoInventario> getListTipoInventario() {
		return listTipoInventario;
	}

	public void setListTipoInventario(List<TipoInventario> listTipoInventario) {
		this.listTipoInventario = listTipoInventario;
	}

	public BuscarArticuloService getService() {
		return service;
	}

	public void setService(BuscarArticuloService service) {
		this.service = service;
	}

	public ConsultaBuscarArticulosCriteria getCriteria() {
		return criteria;
	}

	public void setCriteria(ConsultaBuscarArticulosCriteria criteria) {
		this.criteria = criteria;
	}
	public String getFechaDesde() {
		return fechaDesde;
	}

	public void setFechaDesde(String fechaDesde) {
		this.fechaDesde = fechaDesde;
	}

	public String getFechaHasta() {
		return fechaHasta;
	}

	public void setFechaHasta(String fechaHasta) {
		this.fechaHasta = fechaHasta;
	}
}
